package dados.persistencias;

import java.util.List;

import javax.persistence.TypedQuery;

import negocio.erro.DaoException;
import basica.academico.Curso;
import dados.geral.DAOGenerico;
import dados.interfaces.IDAOCurso;

public class DAOCurso extends DAOGenerico<Curso> implements IDAOCurso {

	@Override
	public List<Curso> pesquisarCursosPorNome(String nome) throws DaoException {
		TypedQuery<Curso> query = entityManager.createQuery(
				"from Curso curso where curso.nome like :nome", Curso.class);
		query.setParameter("nome", "%" + nome + "%");
		return query.getResultList();
	}

	@Override
	public List<Curso> pesquisarCursosPorCodigo(Integer codigo)
			throws DaoException {
		TypedQuery<Curso> query = entityManager.createQuery(
				"from Curso curso where curso.codigo = :codigo", Curso.class);
		query.setParameter("codigo", "%" + codigo + "%");
		return query.getResultList();
	}
	
	@Override
	public List<Curso> listarTodosJoin()
			throws DaoException {
		TypedQuery<Curso> query = entityManager.createQuery(
				"select curso from Curso curso join fetch curso.coordenador", Curso.class);
		//entityManager.getEntityManagerFactory().getCache().evictAll();
		return query.getResultList();
	}

}